অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) এর Connection Pooling ব্যবস্থাপনা HTTP ক্লায়েন্ট রিকুয়েস্ট প্রেরণের সময় সংযোগের পুনঃব্যবহার এবং দক্ষতার জন্য অত্যন্ত গুরুত্বপূর্ণ। এটি একাধিক HTTP রিকুয়েস্টের জন্য একই সংযোগ ব্যবহার করতে সহায়ক, যার ফলে কর্মক্ষমতা বৃদ্ধি পায় এবং নতুন সংযোগ স্থাপন করার জন্য অতিরিক্ত সময় ও সম্পদ অপচয় রোধ হয়।
Connection Pooling এর মাধ্যমে, একাধিক সংযোগ একটি পুলে (pool) রাখা হয় এবং যে কোন সময় এগুলোর মধ্যে একটি সংযোগ পুনঃব্যবহার করা যেতে পারে। এটি প্রধানত সেইসব পরিবেশে উপকারী যেখানে একই সার্ভারে বারবার রিকুয়েস্ট পাঠানো হয়, যেমন API কল, ওয়েব ক্রলিং, এবং সার্ভার ম্যানেজমেন্ট টুলসে।
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
public class ConnectionPoolingExample {
public static void main(String[] args) {
// Connection Pooling সেটআপ
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(100); // সর্বাধিক কনেকশন সংখ্যা
connectionManager.setDefaultMaxPerRoute(20); // প্রতি রুটে সর্বাধিক কনেকশন সংখ্যা
// HttpClient কনফিগারেশন তৈরি করা
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(connectionManager)
.build();
try {
// HTTP GET রিকুয়েস্ট তৈরি করা
HttpGet request = new HttpGet("https://jsonplaceholder.typicode.com/posts");
// রিকুয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ
HttpResponse response = httpClient.execute(request);
// রেসপন্স স্ট্যাটাস কোড পরীক্ষা
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("Response Status Code: " + statusCode);
// রেসপন্স কন্টেন্ট গ্রহণ করা
String responseContent = EntityUtils.toString(response.getEntity());
System.out.println("Response Content: " + responseContent);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// HttpClient বন্ধ করা
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
setMaxTotal(100)
দ্বারা সর্বাধিক কনেকশন সংখ্যা 100 নির্ধারণ করা হয়েছে, এবং setDefaultMaxPerRoute(20)
দ্বারা প্রতি রুটের জন্য সর্বাধিক কনেকশন সংখ্যা 20 নির্ধারণ করা হয়েছে।HttpClients.custom()
ব্যবহার করে কাস্টম HttpClient তৈরি করা হয়েছে, যা সংযোগ পুল ম্যানেজারটি সেট করা হয়েছে।setValidateAfterInactivity(int ms)
: এটি নির্ধারণ করে যে কতটা সময় পর একটি "বিকল" (inactive) কনেকশন পরীক্ষা করা হবে। এটি সংযোগের স্থিতিশীলতা এবং কর্মক্ষমতা উন্নত করতে সহায়ক।connectionManager.closeExpiredConnections()
: এটি মেয়াদ উত্তীর্ণ কনেকশনগুলো বন্ধ করতে ব্যবহৃত হয়।Connection Pooling ব্যবস্থাপনা অ্যাপাচি HTTP ক্লায়েন্টের মাধ্যমে HTTP রিকুয়েস্ট প্রেরণের সময় সংযোগ পুনঃব্যবহারের প্রক্রিয়া সহজ করে। এটি কর্মক্ষমতা বৃদ্ধি করে, সংযোগ স্থাপনের জন্য সময় এবং সম্পদ বাঁচায়, এবং একাধিক রিকুয়েস্টের জন্য কার্যকরী। PoolingHttpClientConnectionManager এর মাধ্যমে একাধিক কনেকশন নিয়ন্ত্রণ করা সম্ভব, যা সিস্টেমের স্কেল এবং দক্ষতা উন্নত করে।
common.read_more